package com.hospital.register.order.service;

import com.hospital.register.dto.order.PaymentListDto;
import com.hospital.register.model.order.PaymentInfo;
import com.hospital.register.vo.order.OrderQueryVo;
import com.hospital.register.vo.order.PaymentListVo;

import java.util.List;

public interface PaymentInfoService {

    /**
     * 新增支付记录
     *
     * @param paymentInfo 预新增的支付记录
     * @return 是否新增成功
     */
    boolean insert(PaymentInfo paymentInfo);

    /**
     * 新增订单的支付记录
     *
     * @param order       订单信息
     * @param paymentType 支付类型
     * @return 是否新增成功
     */
    boolean insert(OrderQueryVo order, Byte paymentType);

    /**
     * 查询支付记录列表
     *
     * @param conditions 查询条件
     * @return 支付记录
     */
    List<PaymentListVo> list(PaymentListDto conditions);

    /**
     * 根据订单 id 、支付类型、支付状态查询支付记录的 id
     *
     * @param orderId       所属订单的 id
     * @param paymentType   支付类型
     * @param paymentStatus 支付状态，可以为空
     * @return id
     */
    Long selectIdByConditions(Long orderId, Byte paymentType,Byte paymentStatus);

    /**
     * 根据 id 更新支付记录
     *
     * @param paymentInfo id 极其新数据
     *                    id 、更新时间必填
     *                    创建时间、删除标记 不可更新
     * @return 是否更新成功
     */
    boolean updateById(PaymentInfo paymentInfo);

}
